package com.senlingspace.payment.lakala.service;

import com.senlingspace.common.exception.payment.LakalaException;
import com.senlingspace.payment.lakala.bean.request.LakalaMicroPayRequest;
import com.senlingspace.payment.lakala.bean.response.LakalaMicroPayResponse;
import com.senlingspace.payment.lakala.bean.response.TradeQueryResponse;

/**
 * 拉卡拉聚合被扫码 apis
 *
 * @author lebronjames
 * @date 2024/07/24
 */
public interface LakalaMicroPayService {

    /**
     * 用户出示付款码支付
     * <p>
     * TODO：切记支付金额一定一定要转为分。。。
     *
     * @param request
     * @return {@link LakalaMicroPayResponse }
     * @throws LakalaException 拉卡拉异常
     *                         抛出这个异常，说明是平台自身问题，还没有到拉卡拉服务接口层
     */
    LakalaMicroPayResponse microPay(LakalaMicroPayRequest request) throws LakalaException;

    /**
     * 聚合扫码-交易查询
     *
     * @param outTradeNo 下单时的商户请求流水号 说明：out_trade_no、trade_no、必有其一。
     * @param shopId     商户门店ID
     * @return {@link TradeQueryResponse }
     * @throws LakalaException 拉卡拉异常
     *                         抛出这个异常，说明是平台自身问题，还没有到拉卡拉服务接口层
     */
    TradeQueryResponse tradeQuery(String outTradeNo, long shopId) throws LakalaException;

}
